package com.cychat.user.controller;

import com.Cychat.commons.entity.ResultMessage;
import com.Cychat.commons.entity.pojo.UserInfo;
import com.cychat.user.entity.dto.PasswordDto;
import com.cychat.user.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

/**
 * Auther: 谢宝辉  <br/>
 * Date: 2025/11/7:15:10  <br/>
 * Description: 用户控制器
 */
@RestController
@RequestMapping("/api/userinfo")
//@CrossOrigin
public class UserController {

    @Autowired
    private UserService userService;

    /**
     * Description : 后台登录
     * ChangeLog : 1. 创建 (2025/11/7 15:14 [Lenovo]);
     * @auther: 谢宝辉
     * date: 2025/11/7:15:14
     * @param userInfo 用户信息
     * @return 登录结果
    */
    @PostMapping("/login")
    public ResultMessage<UserInfo> login(@RequestBody UserInfo userInfo){
        //1.校验输入
        if(userInfo.getUserinfoId() == null || userInfo.getPassword() == null){
            return ResultMessage.error("用户ID、密码不能为空");
        }
        //2.校验用户是否存在
        UserInfo userInfoDb = userService.getById(userInfo.getUserinfoId());
        if(userInfoDb == null){
            return ResultMessage.error("用户不存在");
        }
        //3.查询出角色状态
        if(userInfoDb.getStatus() == 0){
            return ResultMessage.error("角色被禁用");
        }
        //4.校验密码是否正确
        if(!userInfo.getPassword().equals(userInfoDb.getPassword())){
            return ResultMessage.error("密码错误");
        }
        //5.登录成功
        return ResultMessage.success(userInfoDb);
    }

    /**
     * Description : 修改密码
     * ChangeLog : 1. 创建 (2025/11/8 16:53 [Lenovo]);
     * @auther: 谢宝辉
     * date: 2025/11/8:16:53
     * @param passwordDto 密码信息
     * @return 修改结果
    */
     @PostMapping("/updatePassword")
    public ResultMessage updatePassword(@RequestBody PasswordDto passwordDto){
        //1.校验输入
        if(passwordDto.getUserinfoId() == null || passwordDto.getOldPassword() == null || passwordDto.getNewPassword() == null){
            return ResultMessage.error("用户ID、旧密码、新密码不能为空");
        }
        //2.校验用户是否存在
        UserInfo userInfoDb = userService.getById(passwordDto.getUserinfoId());
        if(userInfoDb == null){
            return ResultMessage.error("用户不存在");
        }
        //3.校验密码是否正确
        if(!passwordDto.getOldPassword().equals(userInfoDb.getPassword())){
            return ResultMessage.error("旧密码错误");
        }
        //4.修改密码
        userInfoDb.setPassword(passwordDto.getNewPassword());
        userService.updateById(userInfoDb);
        //5.返回结果
        return ResultMessage.success("修改成功");
    }



}
